package org.springcloud.wisdom.spring_02_classroom.bean;

/**
 * 控制器基类，提供统一的响应数据封装方法。
 */
public class BaseController {

    /**
     * 返回一个布尔类型的响应数据。
     *
     * @param result 布尔结果值
     * @return ResponseData<Boolean> 封装后的响应数据
     */
    public ResponseData<Boolean> returnBoolean(Boolean result) {
        // 创建响应数据对象
        ResponseData<Boolean> responseData = new ResponseData<>();
        // 设置响应数据的结果值
        responseData.setData(result);

        // 根据结果值设置错误码和消息
        if (result) {
            responseData.setErrorCode(ResultCode.SUCCESS.getCode());
            responseData.setMsg(String.valueOf(ResultCode.SUCCESS.getMessage()));
        } else {
            responseData.setErrorCode(ResultCode.COMMON_FAIL.getCode());
            responseData.setMsg(String.valueOf(ResultCode.COMMON_FAIL.getMessage()));
        }
        // 返回封装后的响应数据
        return responseData;
    }

    /**
     * 返回一个对象类型的响应数据。
     *
     * @param data 需要返回的数据对象
     * @return ResponseData<Object> 封装后的响应数据
     */
    public ResponseData<Object> returnObject(Object data) {
        // 创建响应数据对象
        ResponseData<Object> responseData = new ResponseData<>();
        // 设置响应数据的对象数据
        responseData.setData(data);

        // 判断数据对象是否为null，并设置相应的错误码和消息
        if (null != data) {
            responseData.setErrorCode(ResultCode.SUCCESS.getCode());
            responseData.setMsg(String.valueOf(ResultCode.SUCCESS.getMessage()));
        } else {
            responseData.setErrorCode(ResultCode.COMMON_FAIL.getCode());
            responseData.setMsg(String.valueOf(ResultCode.COMMON_FAIL.getMessage()));
        }
        // 返回封装后的响应数据
        return responseData;
    }
}